// This example shows how to create and use two isolated client objects, resulting in two separate connections to the target // OPC DA server. using System; using System.Diagnostics; using System.Threading; using OpcLabs.EasyOpc.DataAccess; using OpcLabs.EasyOpc.DataAccess.OperationModel; namespace DocExamples.DataAccess._EasyDAClient { class Isolated { public static void Main1() { // Instantiate the client objects and make them isolated var client1 = new EasyDAClient { Isolated = true }; var client2 = new EasyDAClient { Isolated = true }; // The callback is a local method the displays the value void ItemChangedCallback(object sender, EasyDAItemChangedEventArgs eventArgs) { Debug.Assert(!(eventArgs is null)); Console.Write($"[{eventArgs.Arguments.State}] "); if (eventArgs.Succeeded) { Debug.Assert(!(eventArgs.Vtq is null)); Console.WriteLine(eventArgs.Vtq.ToString()); } else Console.WriteLine("*** Failure: {0}", eventArgs.ErrorMessageBrief); } Console.WriteLine("Subscribing..."); client1.SubscribeItem("", "OPCLabs.KitServer.2", "Simulation.Random", 1000, ItemChangedCallback, state: 1); client2.SubscribeItem("", "OPCLabs.KitServer.2", "Simulation.Random", 1000, ItemChangedCallback, state: 2); Console.WriteLine("Processing item changed events for 10 seconds..."); Thread.Sleep(10 * 1000); Console.WriteLine("Unsubscribing..."); client1.UnsubscribeAllItems(); client2.UnsubscribeAllItems(); Console.WriteLine("Waiting for 2 seconds..."); Thread.Sleep(2 * 1000); } } }
# This example shows how to create and use two isolated client objects, resulting in two separate connections to the # target OPC DA server. # The QuickOPC package is needed. Install it using "pip install opclabs_quickopc". import opclabs_quickopc import time # Import .NET namespaces. from OpcLabs.EasyOpc.DataAccess import * # Item changed event handler def itemChangedCallback(sender, eventArgs): assert eventArgs is not None print('[', eventArgs.Arguments.State, '] ', sep='', end='') if eventArgs.Succeeded: assert eventArgs.Vtq is not None print(eventArgs.Vtq) else: print('*** Failure: ', eventArgs.ErrorMessageBrief, sep='') # Instantiate the client objects and make them isolated. client1 = EasyDAClient() client1.Isolated = True client2 = EasyDAClient() client2.Isolated = True print('Subscribing item changes...') IEasyDAClientExtension.SubscribeItem(client1, '', 'OPCLabs.KitServer.2', 'Simulation.Random', 1000, EasyDAItemChangedEventHandler(itemChangedCallback), 1) IEasyDAClientExtension.SubscribeItem(client2, '', 'OPCLabs.KitServer.2', 'Simulation.Random', 1000, EasyDAItemChangedEventHandler(itemChangedCallback), 2) print('Processing item change notifications for 10 seconds...') time.sleep(10) print('Unsubscribing all items...') client1.UnsubscribeAllItems() client2.UnsubscribeAllItems() print('Waiting for 2 seconds...') time.sleep(2) print('Finished.')
Copyright © 2004-2023 CODE Consulting and Development, s.r.o., Plzen. All rights reserved. Web page: www.opclabs.com
Send Documentation Feedback. Resources: Knowledge Base. Technical support: Online Forums, FAQ.